// use actix_web::{dev::Service, dev::ServiceRequest, dev::ServiceResponse, Error, Result};
// use std::pin::Pin;
// use futures::future::{ok, Ready};
//
// // 定义全局异常处理器结构体
// pub struct GlobalErrorHandler;
//
// impl<S, B> actix_web::dev::Transform<S, ServiceRequest> for GlobalErrorHandler
//     where
//         S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = actix_web::Error> + 'static,
//         S::Future: 'static,
//         B: 'static,
// {
//     type Response = ServiceResponse<B>;
//     type Error = actix_web::Error;
//     type InitError = ();
//     type Transform = GlobalErrorHandlerMiddleware<S>;
//     type Future = Ready<Result<Self::Transform, Self::InitError>>;
//
//     fn new_transform(&self, service: S) -> Self::Future {
//         ok(GlobalErrorHandlerMiddleware { service })
//     }
// }
//
// // 定义全局异常处理器中间件
// pub struct GlobalErrorHandlerMiddleware<S> {
//     service: S,
// }
//
// impl<S, B> Service<ServiceRequest> for GlobalErrorHandlerMiddleware<S>
//     where
//         S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = actix_web::Error> + 'static,
//         S::Future: 'static,
//         B: 'static,
// {
//     type Response = ServiceResponse<B>;
//     type Error = actix_web::Error;
//     type Future = Pin<Box<dyn std::future::Future<Output = Result<Self::Response, Self::Error>>>>;
//
//     fn poll_ready(&self, cx: &mut std::task::Context<'_>) -> std::task::Poll<Result<(), Self::Error>> {
//         self.service.poll_ready(cx)
//     }
//
//     fn call(&self, req: ServiceRequest) -> Self::Future {
//         let fut = self.service.call(req);
//
//         Box::pin(async move {
//             let res = fut.await?;
//
//             Ok(res)
//         })
//     }
// }
